GENERADOR DE CODI FONT (MANTENIMENTS SIMPLES) PER PROJECTES BASATS EN EL FRAMEWORK CANIGÓ.

ÍNDEX.

1. Context
2. Introducció al generador de codi.
3. Premises: estructura de directoris.
4. Codi font generat.
5. Vistes generades.
6. Workflow: flux d'execució entre les diferents vistes generades d'un manteniment.
7. Configuració del generador de codi.
8. Limitacions del generador de manteniments simples.
9. Evolució del generador de manteniments simples.

Annex
A1. Integració manual del codi generat pel generador.
A2. Disseny del generador de manteniments simples.

1. CONTEXT.

Des del CTTI, i com a evolutiu del Framework Canigó, es planteja la necessitat de disposar de noves eines que ajudin a la productivitat dels diferents projectes desenvolupats fent servir el Framework Canigó.
D'entre aquestes eines, el present document, considerarà el "Generador de codi per manteniments simples". El generador de manteniments simples permet generar els casos d'ús: consultes, altes, baixes i modificacions associats a les dades d'una taula concreta d'una base de dades.

El present document s'estructura en els següents apartats o capítols:

    • Introducció al generador de codi.
      Inclou una breu explicació de què és el generador de codi, què es pretèn amb el seu ús i les motivacions que han portat al seu desenvolupament.
    • Premises: estructura de directoris.
      Per defecte, el generador de codi per manteniments simples entèn que l'estructura de directoris en què està estructurat un projecte concret és una determinada i concreta, i que aquesta es basa en l'estructuració de directoris del Petstore. En aquest apartat s'explica quina és l'estructura de directoris que presuposa el generador de manteniments simples.
    • Codi font generat.
      En aquest apartat es fa una breu explicació de tots i cadascun dels fitxers generats i/o modificats pel generador de manteniments simples.
    • Vistes generades.
      En aquest apartat s'expliquen breument les vistes que genera el generador de manteniments simples.
    • Exemple de vistes generades pel generador.
      En aquest apartat es veurà un cas concret d'un manteniment generat pel generador de manteniments simples. Es veuràn les pantalles creades així com les dades que es presenten.
    • Workflow: flux d'execució entre les diferents vistes generades d'un manteniment.
      En aquest apartat es mostra un esquema del workflow que s'ha seguit pel manteniment simple generat.
    • Configuració del generador de codi.
      El generador de codi per manteniments simples es basa en una configuració inicial que permet conèixer, per exemple, les dades de la BBDD a la que s'ha de connectar per poder obtenir les metadades de la taula a partir de la qual es genera el manteniment simple, el nom del projecte, el directori de treball, ... totes aquestes propietats es descriuen en aquest apartat.
    • Limitacions del generador de manteniments simples.
      En aquest apartat es presenta un seguint de limitacions del generador de manteniments simples.
    • Evolució del generador de manteniments simples.
      En aquest apartat es mostra les següents funcionalitats o desenvolupaments que caldria realitzar sobre el generador de manteniments simples per tal de reduïr les seves limitacions.
    • Annex.
      L'annex contempla dos apartats, el primer d'ells fa una breu explicació de com generar manteniments simples tenint en compte que l'estructura de directoris del projecte no es correspon amb l'estructura de directoris definida en l'apartat 3. Premises: estructura de directoris. El segon d'ells fa una breu explicació del disseny del generador de manteniments simples.

 

2. INTRODUCCIÓ AL GENERADOR DE CODI.

Cal tenint present que la gran majoria d'aplicatius finals que es desenvolupen inclouen tasques de desenvolupament de manteniments simples. Aquests desenvolupaments no comporten un alt nivell de complexitat, tot i això, cal planificar-los, desenvolupar-los, definir tests funcionals i unitaris, ... que introdueixen un cost addicional tant en recursos com en temps en tot projecte.

És per aquest motiu que s'han considerat les següents finalitats en el disseny i desenvolupament del generador de codi:

  • Generar codi lliure d'errors ja testejat.
  • Generar codi homogeni i clarament entendible: tots els manteniments simples generats a partir del generador de codi seguiràn un mateix patró base.
  • Generar codi forçosament estructurat en directoris per facilitar la localització dels diferents arxius del manteniment simple al desenvolupador. D'aquesta manera s'evita que els desenvolupadors introdueixin errors per desconeixement de quin arxiu han d'actualitzar.
  • Reduïr al màxim el temps de generació de manteniments simples.
  • Reduïr al màxim la propagació d'errors provocats per copy&paste.

Tot i això, cal tenir present que l'objectiu principal del Generador de Codi és l'ajuda als desenvolupadors d'aplicatius en la generació de manteniments simples.

El Generador de codi és una eina que permet la generació automàtica d'una sèrie de fitxers amb codi font que es poden integrar, també automàticament, en un entorn de treball, disposant així dels casos d'ús consultes, altes, baixes i modificacions associats a les dades d'una taula d'una BBDD interrelacional determinada.

Un manteniment simple (o CRUD) considera les següents accions a realitzar sobre les dades d'una taula determinada:

  • [C]reate: alta de nous registres.
  • [R]ead: consultar ò llistar els registres ja existents.
  • [U]pdate: modificar les dades d'un registre existent.
  • [D]elete: esborrar un registre existent.

3. PREMISES: ESTRUCTURA DE DIRECTORIS.

L'estructura de directoris de l'entorn de treball en què es basa el Generador de codi és la següent:

Estructura de directoris sota /src/main/java/nomPaquet

Estructura de directoris sota /src/main/resources


Estructura de directoris sota /src/main/webapp

Si us plau, si el seu entorn de treball no considera aquesta estructura de directoris llegeixi amb atenció l'apartat: A1. INTEGRACIÓ MANUAL DEL CODI GENERAT PEL GENERADOR.

4. CODI FONT GENERAT.

A continuació es detallen un per un els fitxers que el generador de codi crea i ubica en el directori que pertoca d'un entorn de treball.

DIRECTORI /src/main/java/nomPaquet

Aquest directori conté els fitxers de negoci, POJOs i l'Action d'struts que gestiona la interacció de l'usuari final amb l'aplicatiu, concretament amb el manteniment que es genera.

FITXERS GENERATS.

  • nomPaquet.model/nomTaula.javaPOJO.
  •  nomPaquet.model.base/BasenomTaula.javaSuperclasse de la classe d'objectes anterior (nomTaula.java).
  • nomPaquet.model.bo/nomTaulaBO.javaInterfície que defineix els métodes d'accés al model de dades (emmagatzematge d'objectes, actualització de les dades d'un objecte ja existent, creació d'objectes nous, esborrat d'objectes existents, ...).
  • nomPaquet.model.bo.impl/nomTaulaBOImpl.javaImplementació de la interfície anterior (_nomTaula_BO.java)
  • nomPaquet.struts.action/nomTaulaAction.javaControlador d'struts que gestiona la interacció de l'usuari final de l'aplicatiu pel que fa al manteniment simple que s'ha generat.
    FITXERS ACTUALITZATS.

Pel que fa a aquest directori (/src/main/java/nomPaquet) no és necessari l'actualització de cap fitxer.

DIRECTORI /src/main/resources*

Aquest directori conté els fitxers de recursos de l'aplicatiu:

  • fitxers de configuració de hibernate (hibernate.cfg.xml, hibernate.websphere.cfg.xml)
  • fitxers d'externalització d'idiomes (applicationResources_xx_YY.properties, ...)
  • fitxers d'injecció de propietats de spring (action-servlet-*.xml, ...)
  • fitxers de definició de workflow i pantalles: struts (struts-config.xml)
  • fitxers d'estructuració de pantalles: tiles (tiles-definitions.xml)
  • fitxers de validacions (validation.xml).

FITXERS GENERATS.

  • hibernate.mappings_/nomTaula{_}.hbm.xmlFitxer de configuració de hibernate que conté el mapeig entre les diferents columnes de la taula, de la que es genera el manteniment, i els atributs del POJO.
  • i18n/nomTaula/applicationResources_xx_YY.propertiesEs generen 3 fitxers d'externalització d'idiomes: ca_ES, es_ES i en_GB. Aquests fitxers faciliten que tot l'idioma de l'aplicatiu final quedi recollit en ells i no en els fitxers de la capa de presentació (jsps).
  • spring/action-servlet-nomTaula.xmlFitxer d'injecció de propietats pel manteniment.
  • struts/nomTaula/struts-config.xmlFitxer de configuració d'struts on es defineixen les diferents accions que podem tenir associades al manteniment simple.
  • tiles/nomTaula/tiles-definitions.xmlFitxer de definició de les diferents vistes del manteniment simple així com l'estructuració de totes i cadascuna d'elles.
  • validation/nomTaula/validation.xmlFitxer que conté les validacions que s'han de dur a terme per les altes i modificacions de les dades associades a la taula del manteniment. Les validacions que s'han desenvolupat són: dades requerides (obligatòries) i validacions de tipus de dades.

FITXERS ACTUALITZATS.

  • hibernate/config/hibernate.cfg.xmlS'afegeix el mapeig al fitxer de configuració de hibernate associat al nou manteniment.
  • hibernate/config/hibernate.websphere.cfg.xmlS'afegeix el mapeig al fitxer de configuració de hibernate associat al nou manteniment.
  • i18n/applicationResources_xx_YY.propertiesS'afegeixen les descripcions necessàries per les noves opcions de menú del manteniment simple.
  • spring/action-servlet.xmlS'afegeix el import del recurs de l'action servlet del manteniment simple.
  • spring/canigo-web-lists-options.xmlS'afegeix la consulta de les dades de la taula per si mai es té una altra taula que hi faci referència (claus foranas). De manera que en el manteniment simple de la taula referenciant es tingui la possibilitat de disposar d'un llistat desplegable amb els valors de la taula a la que es fa referència.
  • spring/canigo-web-lists.xmlS'afegeix la consulta de les dades de la taula a partir de la qual es genera el manteniment simple. Aquesta consulta ens servirà per llistar les dades de la taula.
  • struts/struts-config.xmlS'afegeix la referència als fitxers d'externalització d'idioma, de tiles i de validacions corresponents al nou manteniment simple.

DIRECTORI /src/main/webapp

  • Aquest directori conté els fitxers que defineixen les diferents vistes del manteniment simple.

FITXERS GENERATS.

  • WEB-INF/jsp/nomTaula/nomTaula.jspjsp que defineix la vista d'edició de les dades d'un objecte referent a una fila de la taula del manteniment que es genera.
  • WEB-INF/jsp/nomTaula/nomTaulaCreate.jspjsp que defineix la vista de creació d'un nou objecte associat a la taula del manteniment que es genera.
  • WEB-INF/jsp/nomTaula/nomTaulaList.jspjsp que defineix la vista del llistat de les dades de la taula del manteniment que es genera.
  • WEB-INF/jsp_/nomTaula/nomTaula{_}ListMenu.jspjsp que indica l'operació que s'està duent a terme.
  • WEB-INF/jsp/nomTaula/nomTaulaMenu.jspjsp que indica l'operació que s'està duent a terme.

FITXERS ACTUALITZATS.

  • WEB-INF/jsp/includes/fitxerMenu.jspS'afegeix el menú corresponent al nou manteniment simple.

5. VISTES GENERADES.

El Generador de codi genera una nova carpeta de menú al fitxer menu-config.xml. Aquesta nova carpeta pasarà a ser la primera carpeta del menú (serà feina del desenvolupador ubicar-la en l'ordre que consideri més convenient). Aquesta nova carpeta, en desplegar-se, contindrà dues opcions de menú:

  • Consulta / llistat: que proporcionarà un llistat de tots els registres existents en la taula de la que es parteix per generar el codi font. Addicionalment, per cada fila de la taula es disposarà de dues opcions més per aquell registre:
  • Modificació: possibilitarà la modificació de les dades del registre.
  • Esborrat: possibilitarà l'esborrat del registre.
  • Alta: que possibilitarà l'alta de noves dades associadas a la taula de la que s'ha generat codi.

6. WORKFLOW: FLUX D'EXECUCIÓ ENTRE LES DIFERENTS VISTES GENERADES D'UN MANTENIMENT.

A continuació es detalla gràficament el workflow que segueix qualsevol manteniment simple generat a partir del generador de manteniments simples:


7. CONFIGURACIÓ DEL GENERADOR DE CODI.

El generador de codi permet la definició d'un conjunt de propietats inicials a partir de les quals es generarà el codi necessari pel manteniment de les dades d'una taula. La configuració inicial inclou les següents propietats (que estàn definides al fitxer: generator.properties):

A continuació es mostra un exemple de fitxer generator.properties:

#En les dades de connexió amb el SGBD si database.sgbd=M (s'estableix connexió amb MySQL), si és database.sgbd=O (s'estableix connexió amb Oracle).

database.host=bna-s007.es.int.atosorigin.com
database.port=1521
database.username=canigo
database.password=canigo
database.schema=canigo
database.service=Legolas
database.sgbd=O

directories.workingDirectory=C:/CanigoGeneratorTest
project.projectName=canigo-samples-jPetstore
project.rootDir=net/gencat/ctti/canigo/samples/jpetstore
project.rootPackage=net.gencat.ctti.canigo.samples.jpetstore
project.extendLayout=site.altLayoutPetStore
project.menuJSP=/src/main/webapp/WEB-INF/jsp/includes/left.jsp

#Si no s'informa crudModule es crearà un mòdul amb el nom de la taula de la que es genera el manteniment
# simple. Si s'informa crudModule es crearà un mòdul en el que s'afegirà tot el codi generat pel manteniment simple.
i18n.menuDir=/src/main/resources/i18n
database.convertTable=PERMIS_APLICACIO
project.crudModule=permis_aplicacio
project.attributeFK=id_aplicacio
project.sequenceName=SEQ_PERMIS_APLICACIO





A continuació, es descriuen una per una totes les propietats que ens permeten configurar el generador de codi per tal de generar manteniments simples.

PROPIETATS DE CONNEXIÓ AMB LA BD.

    • database.hostPermet indicar el host on està ubicat el servidor de la base de dades.
    • database.portPermet indicar el port del servidor de la base de dades.
    • database.usernamePermet indicar el nom d'usuari amb el que ens connectarem a la base de dades.
    • database.passwordPermet indicar el password per autenticar-nos a la base de dades.
    • database.schemaEsquema de la base de dades a la que ens connectarem.
    • database.serviceServei del SGBD.
    • database.sgbdEns permet indicar el tipus d'SGBD en el que es troba la taula de la que es generarà el manteniment simple (O: Oracle, M: MySQL).

PROPIETATS DE L'ESTRUCTURA DE DIRECTORIS.

    • directories.workingDirectoriDirectori de treball en què es troba el projecte en el que s'integrarà el manteniment simple generat. Si l'estructura de directoris del projecte no coincideix amb l'estructura de directoris definida en l'apartat PREMISES: ESTRUCTURA DE DIRECTORIS, cal que llegeixi atentament l'annex que es troba al final del present document.
    • project.projectNamePermet indicar el nom del projecte en que s'integrarà el manteniment simple.
    • project.rootDirPermet indicar sota quin directori s'hauràn d'ubicar els fitxers "java".
    • project.rootPackagePermet indicar el nom del package sota el qual es troben la resta de projectes "java" del projecte.
    • project.extendLayoutPermet indicar el fitxer layout base, aquest layout base es tindrà en compte per a generació de les diferents vistes del manteniment simple.
    • project.menuJSPPermet indicar la ubicació del fitxer (jsp) que inclou les diferents opcions de menú de l'aplicatiu.
    • i18n.menuDirPermet indicar la ubicació dels diferents fitxers d'externalització d'idioma de l'aplicatiu.

PROPIETATS DE LA TAULA A CONVERTIR.

    • database.convertTablePermet indicar el nom de la taula de la que es vol generar el manteniment simple.
    • project.crudModulePermet indicar el nom del directori sota el que s'emmagatzemaràn els fitxers generats pel manteniment simple. Aquesta propietat ens permet localitzar ràpidament els fitxers generats pel manteniment simple.
    • project.attributeFKEns permet indicar de quina columna de la taula actual s'han d'agafar les dades per mostrar llistats desplegables.
    • project.sequenceNameEns permet indicar el nom de la seqüència de la BD associada a la taula del manteniment. Si la taula no té seqüència associada al fitxer de configuració d'hibernate s'indicarà que el identificador és de tipus assigned (i es demanarà, aquest valor, en l'alta de dades), en canvi si la taula associada té seqüència i aquesta s'indica amb aquesta propietat al fitxer de configuració d'hibernate s'indicarà que el identificador és de tipus sequence (i no es demanarà, aquest valor, en l'alta de dades).

8. LIMITACIONS DEL GENERADOR DE MANTENIMENTS SIMPLES.

El generador de manteniments simples permet ser una ajuda als desenvolupadors de projectes basats en el framework Canigó, per això, té una sèrie de limitacions que s'expliciten tot seguit.

  • El generador de manteniments simples NO genera manteniments simples per taules que no tenen definida una clau primària. S'entèn que un bon disseny de base de dades passa perquè totes les taules de la mateixa tinguin definida una clau primària, si no és així, el comportament del generador de manteniments simples informa d'aquest cas i aborta la generació del codi.
  • El generador de manteniments simples NO integra les diferents opcions de menú que es generen en el nou manteniment dintre d'una altra opció de menú. Serà l'usuari del generador qui haurà d'introduïr aquestes noves opcions de menú en l'ubicació de menú que consideri més adient.
  • El generador de manteniments simples NO indica una descripció idònia i definitiva dels noms d'atributs, opcions de menú del manteniment simple. Això és, si la taula que es converteix es diu F_FACTURES i té un atribut que es diu DESC_PRODUCTE. El manteniment simple generarà una nova carpeta de menú amb el nom "F_factures Menú", amb dues subopcions: "F_factures" (llistat) i "F_factures Alta" (alta de noves factures). Així mateix, en totes les pantalles del manteniment simple en les que aparegui l'atribut DESC_PRODUCTE, aquest apareixerà com "desc_producte" i nom com "Descripció del producte", que seria més apropiat. Serà, doncs, tasca del desenvolupador del projecte actualitzar convenientment els literals indicats en els fitxers d'externalització d'idioma.
  • El generador de manteniments simples NO genera recursivament manteniments simples. Això és, si es genera el manteniment simple associat a una taula que conté una clau forana (que fa referència a altra taula), no es generarà el manteniment simple de la taula que es referencia. Això sí, si s'està integrant directament codi generat en un entorn de desenvolupament, el desenvolupador del projecte podrà observar que els fitxers .java generats donen errors de compilació, doncs no es disposa de la classe objectes referenciada. Això es solventa fàcilment generant el manteniment simple de la taula referenciada.
  • El generador de manteniments no té en compte que la clau primària d'una taula pugui ser, alhora, clau forana d'una altra taula (clau primària d'una taula que no té seqüència). En aquests casos la clau primària apareixerà com una casella de text en comptes d'aparèixer com un llistat desplegable amb els valors als quals s'ha de fer referència. Això implica que el desenvolupador de l'aplicatiu haurà de fer les actualitzacions necessàries per tal de carregar una llista de valors en comptes de permetre que l'usuari final de l'aplicatiu pugui indicar valors incorrectes (que provocarien errors d'execució de clau forana violada). Per això, cal que el desenvolupador actualitzi:
  • action-servlet-nomTaula.xmlCal que indiqui que el identificador no serà un textFieldTag sinò un selectFieldTag.* canigo-web-lists-options.xmlCal que afegeixi la consulta per carregar els valors a afegir al select (llista desplegable).
  •  nomTaula.jspCal que actualitzi el camp del identificador perquè en comptes de ser un fwk:text sigui un fwk:select.
  •  nomTaulaCreate.jspCal que actualitzi el camp del identificador perquè en comptes de ser un fwk:text sigui un fwk:select.

9. EVOLUCIÓ DEL GENERADOR DE MANTENIMENTS SIMPLES.

A continuació es llisten un conjunt de millores a introduïr en el generador de manteniments simples:

  • Permetre la integració del generador de manteniments simples sota una opció de menú determinada.
  • Permetre que el generador de manteniments simples pugui tenir en compte que una clau primària pot ser, alhora, clau forana, mostrant així, una llista desplegable amb els valors refenciables, en comptes d'una casella de text on introduïr els valors als que es fan referència.
  • Generar el codi necessari per carregar les llistes de valors per quan una clau primària d'una taula sigui, alhora, clau forana d'una altra taula.

ANNEX

A1. INTEGRACIÓ MANUAL DEL CODI GENERAT PEL GENERADOR.

Quan el projecte en el que s'està treballant no segueix l'estructura de directoris definida a l'apartat PREMISES: ESTRUCTURA DE DIRECTORIS, cap la possibilitat de generar tot el codi en un directori buït i després anar copiant els fitxers i/o dades allà on toqui. D'aquesta manera, si es genera un manteniment sobre una carpeta buïda, caldrà tenir present que:

FITXERS DE NEGOCI.

  • Cal copiar el fitxer nomTaula.java (POJO) al directori on es trobin els POJOs del projecte.
  • Cal copiar el fitxer BasenomTaula.java al directori on es trobin els fitxers Base*.java. Aquest fitxer, tanmateix, es pot obviar i es poden definir els seus mètodes dintre del POJO generat.
  • Cal copiar el fitxer nomTaulaBO.java al directori on es trobin els fitxers *BO.java.
  • Cal copiar el fitxer nomTaulaBOImpl.java al directori on es trobin els fitxers *BOImpl.java.
  • Cal copiar el fitxer nomTaulaAction.java al directori on es trobin els fitxers *Action.java.

FITXERS DE RECURSOS.

  • Cal afegir la línia que inclou el fitxer de configuració de hibernate associat al manteniment en el fitxer hibernate.cfg.xml:*
    <mapping resource="hibernate/mappings/nomTaula.hbm.xml"  />
    

Observació: pot ser necessària una actualització del path en què es troba el fitxer.* Cal copiar el fitxer de configuració d'hibernate associat al manteniment (nomTaula.hbm.xml) en el directori on es trobin tots els fitxers de hibernate (.hbm.xml). Cal copiar tots els fitxers d'externalització d'idioma al directori del projecte on es trobin aquests fitxers (.properties).*Observació: cal tenir present la ubicació d'aquests fitxers per tal d'actualitzar convenientment el fitxer canigo-services-i18n.xml.* Cal copiar el fitxer action-servlet-nomTaula.xml al directori del projecte on es trobin els fitxers action-servlet-*.xml.

  • Cal afegir la línia que inclou el fitxer de l'action-servlet associat al manteniment en el fitxer action-servlet.xlm*:*
    <import resource="action-servlet-nomTaula.xml" />
    


    Cal afegir les següents línies al fitxer menu-config.xml, sota el tag <Menu> incloent-lo sota la carpeta de menú que es consideri més adient:
    <Menu name="nomTaula"  title="menu.nomTaula">
    
    <Item name="nomTaula"  title="menu.item.nomTaula"  location="nomTaula.do?reqCode=search" />
    
    <Item  name="nomTaula" title="menu.item.nomTaula"  location="nomTaula.do?reqCode=saveNew" />
    
    </Menu>
    

Cal copiar el fitxer de configuració d'struts (struts-config.xml) a la carpeta corresponent a on es trobin els fitxers d'struts (cal considerar que si tots els fitxers de configuració d'struts es troben sota una mateixa carpeta caldrà fer un renombrament del fitxer).
Observació: pot ser necessària una actualització del fitxer petstore-servlet.xml, indicant el nou path del fitxer struts-config.xml

  • Cal copiar el fitxer de tiles (tiles-definitions.xml) a la carpeta corresponent a on es trobin els fitxers de definició de tiles (cal considerar que si tots els fitxers de configuració de tiles es troben sota una mateixa carpeta caldrà fer un renombrament del fitxer).
    Observació: pot ser necessària una actualització dels fitxers que fan referència a aquest fitxer struts-config.xml, corresponent al manteniment, indicant el nou path del fitxer tiles-definitions.xml
  • Cal copiar el fitxer de validacions (validation.xml) a la carpeta corresponent a on es trobin els fitxers de validacions (cal considerar que si tots els fitxers de configuració de tiles es troben sota una mateixa carpeta caldrà fer un renombrament del fitxer).
    Observació: pot ser necessària una actualització dels fitxers que fan referència a aquest fitxer (canigo-services-validation.xml) indicant el nou path del fitxer validation.xml

FITXERS DE LA CAPA DE PRESENTACIÓ (JSPs).

  • Cal incloure l'opció de menú del manteniment dintre de la jsp en la que es troba el menú.
  • Cal copiar totes les jsp's generades pel generador de manteniments simples a la carpeta en què es trobin totes les jsp's del projecte o bé sota una carpeta concreta, associada a aquest manteniment.
    Observació: pot ser necessària una actualització dels fitxers de definició dels tiles (tiles-definitions.xml).

A2. DISSENY DEL GENERADOR DE MANTENIMENTS SIMPLES.

El generador de codi per manteniments simples té una estructura prou senzilla que es basa en invocar métodes d'altres classes java a partir d'una classe concreta (CodeGenerator). D'aquesta manera els diferents métodes que s'acaben invocant generen i/o actualitzen els fitxers que permeten disposar d'un manteniment simple.

Així mateix, hi ha un conjunt de classes d'objectes que permeten l'emmagatzematge de informació de les metadades de la taula a convertir de la BD pel seu posterior tractament:

CLASSE D'OBJECTES DADES QUE EMMGATZEMA
IdInfo.java Dades relacionades amb la clau primària de la taula: nom de la columna que emmagatzema la clau primària, tipus de dada, nom a associar a l'atribut pel mapeig amb el fitxer de configuració d'hibernate, tipus de dada a hibernate, ...
PropertyInfo.java Dades relacionades amb altres columnes de la taula que no són ni clau primària ni clau forana. Aquesta classe emmagatzema dades com ara: nom de la columna, no de l'atribut associat a la columna, tipus de dada a la BD, tipus de dada a hava, tipus de dada a hibernate, si es tracta o no d'un atribut que pugui prendre valors nulls, llargària de l'atribut, ...
ManyToOneInfo.java Dades relacionades amb claus foranes de la taula. Emmagatzema dades com ara: nom de la columna, nom de la classe a la que fa referència, si pot prendre valors nulls o no, nom del identificador de la taula referenciada, nom de la consulta (llista) que carrega els valors de la taula referenciada,...